package cn.lingyangwl.agile.system.assembly;

import cn.lingyangwl.agile.dynamic.config.model.ConfigMsg;
import cn.lingyangwl.agile.model.module.config.param.WebSiteParam;
import cn.lingyangwl.agile.system.model.entity.SysConfig;
import cn.lingyangwl.agile.system.model.rqrs.config.*;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;
import org.mapstruct.Mappings;

/**
 * 参数配置
 *
 * @author shenguangyang
 */
@Mapper(componentModel = "spring")
public interface SysConfigAssembly {
    ConfigResp toConfigResp(SysConfig source);

    SysConfig toConfig(ConfigSaveReq source);

    SysConfig toConfig(ConfigUpdateReq source);

    SysConfig toConfig(ConfigParamUpdateReq source);

    InitConfigResp.WebSite toWebSite(WebSiteParam webSite);

    @Mappings({
            @Mapping(source = "defaultHeadImg", target = "head")
    })
    InitConfigResp.DefaultImage toDefaultImage(WebSiteParam webSite);

    void toUpdateConfig(@MappingTarget SysConfig config, ConfigParamUpdateReq source);

    default ConfigMsg toConfigMsg(String configKey, String configValue) {
        return ConfigMsg.builder().configKey(configKey).configValue(configValue).build();
    }

    default ConfigMsg toConfigMsg(SysConfig config) {
        return ConfigMsg.builder().tenantId(config.getTenantId())
                .configKey(config.getConfigKey()).configValue(config.getConfigValue()).build();
    }


}